Other than reading and writing pixels, all access to a video device normally goes through the software video driver. (You can use VideoToolbox SetEntriesQuickly.c to bypass the video driver of a few devices, but I don't recommend that, except as a last resort, because your program will then only work with the few video devices that SetEntriesQuickly supports.) The video driver is normally supplied in ROM on the video card or, for built-in video, in the computer's ROM. Many drivers have subtle bugs that TimeVideo has uncovered and documented. This file is a complete list of all the bugs that I know of. I have the very strong impression that reporting these bugs to the manufacturers has led them to eliminate the bugs in subsequent versions. Before TimeVideo there was no easy way to test for most of these bugs. If your driver is not listed, please run TimeVideo and send me the report: denis@xp.psych.nyu.edu
1. The following drivers crash if one attempts to make a cscGetEntries request. GDGetEntries tests for these driver names and version numbers, and returns an error message instead of calling a driver that would crash. Try the demo TestGDVideo.
•Mac IIci “Macintosh II Built-In Video” (.Display_Video_Apple_RBV1) (Reported to Apple MacDTS 3/7/90 and Apple.Bugs 12/30/92)
•Relax 19" Model 200 (.Color_Video_Display version 9288). (Reported to Relax Tech. 1/19/93)
•DOME MD Max (.Display_Video_Apple_DOMEMax version 2). (Reported to DOME 3/30/95.)
2. The following drivers take too long (more than 1 frame) to load the clut (i.e. cscGetEntries request: cscSetEntries). And many suppress one or more frame's worth of VBL interrupts each time they load the clut. Try TimeVideo.
•Apple 4•8 and 8•24 “Macintosh Display Card” (.Display_Video_Apple_MDC) and “Macintosh Display Card 8•24 GC” (.Display_Video_Apple_MDCGC) take two frames to load the clut (and suppress one vbl interrupt) in all modes. (Reported to Apple.Bugs 12/30/92)
•Radius PrecisionColor 8 and 8xj take 5-8 frames to load the whole clut in 8-bit mode (and suppress 5-8 vbl interrupts); the time is proportional to the number of clut entries being loaded. (Ok in 1-, 2-, and 4-bit modes.)
•“RasterOps ColorBoard 264” (.RasterOps 1.2 264 Video Driver version 9327) takes 2 frames to load the clut (and suppresses 1 vbl interrupt) in 8- and 32-bit modes. (Ok in 1-, 2-, and 4-bit modes.)
•RasterOps “PaintBoard Li” 1.0 24XLi Video Driver takes 4 frames to load the clut (and suppresses 3 vbl interrupts) in 8-,16-, and 32-bit modes. (Ok in 1-,2-, and 4-bit modes.) (Reported to RasterOps 12/30/92).
•“RasterOps 8XL” (.RasterOps 1.2 8XL Video Driver version 9327) takes 4 frames to load the clut (and suppresses 3 vbl interrupts) in 8-bit mode. (Ok in 1-,2-, and 4-bit modes.)
•"RasterOps 24XLTV" (.RasterOps 1.4 24XLTV Video Driver version 9327) takes 4 frames to load the clut (and suppresses 3 vbl interrupts) in 8- and 32-bit modes. (Ok in 1-,2-, 4-, and 16-bit modes.)
•RasterOps "PaintBoard Turbo XL" (.RasterOps 1.0 PBTurboXL Video Driver version 9327) takes 4 frames to load the clut (and suppresses 3 vbl interrupts).
•“Spectrum/8•24 PDQ” (.Display_Video_Apple_SpecRice version 3) takes 4 frames to load the clut in all modes.
3. The following cards and drivers issue multiple VBL interrupts per frame, whereas they should emit exactly one per frame. Try TimeVideo.
•The 4•8 and 8•24 “Macintosh Display Card” (.Display_Video_Apple_MDC) emit several VBL interrupts per video frame. (Reported to Apple.Bugs 12/30/92)
•Apple Quadra 700 "Macintosh E Built-In Video" (.Display_Video_Apple_DAFB) emits 2 VBL interrupts per frame if the processor cache is enabled, but emits only 1, as it's supposed to, if the processor cache is disabled. (Reported by Kyle Cave, cavekr@ctrvax.vanderbilt.edu)
•Apple Quadra 900 “Macintosh C Built-In Video” (.Display_Video_Apple_DAFB) occasionally emits more than 1 VBL interrupt per frame.
•Apple Quadra 950 “Macintosh G Built-In Video” (.Display_Video_Apple_DAFB version 2) emits 2 or 3 VBL interrupts per frame. (Reported to Apple.Bugs 12/30/92)
•Note that the .Display_Video_Apple_DAFB version 3 driver does NOT exhibit this bug, at least on the Centris 650 where it resides. It would be interesting to try copying this driver to the afflicted Quadra's, adapting the instructions given above for copying a driver from the IIsi to the IIci.
4. 16 & 32-bit modes. These video drivers will correctly load the whole clut, but screw up if asked to load one clut entry at a time. The problems only occur in 16- and 32-bit mode, i.e. calling cscDirectSetEntries. Apparently few or no applications (other than TimeVideo) ever do this, as otherwise the manufacturers would have detected the fault.
•TrueVision NuVista version 3.0 cscDirectSetEntries (i.e. 16- and 32-bit pixel modes) loads garbage unless “start” is zero. cscSetEntries (i.e. 1-, 2-, 4-, and 8-bit pixel modes) works fine.
•RasterOps "PaintBoard Turbo XL" (.RasterOps 1.0 PBTurboXL Video Driver version 9327) crashes when attempting to serially load the CLUT in 16-bit mode.
5. The following video drivers don't support cscSetGamma or cscGetGamma. (Apparently these calls are optional, so not supporting them is not, strictly speaking, a bug.)
•“Radius PowerView” (.Radius PowerView Display version 9848) calling cscGetGamma returns a gamma table that's all zero. Calling cscSetGamma has no effect. Fortunately the permanent gamma table is the identity transformation. (Radius confirmed the bugs on 7/93.)
•“Radius GS/C” (.Radius GSC version 18663) doesn't support cscSetGamma or cscGetGamma. Unfortunately the permanent gamma table is NOT the identity transformation, so it fails the write-then-read cscSetEntries-cscGetEntries test performed by TimeVideo. (Radius suggests upgrading to one of their newer cards. 3/95)
•“SuperMac ColorCard” v1.97S (.Display_SuperMac_ColorCard version 1) does not implement the gamma table; cscSetGamma and cscGetGamma both return error codes. Fortunately the permanent gamma table is the identity transformation.
6. Some color video cards autodetect monochrome monitors, and remain in gray mode despite attempts to set to color mode (e.g. to use the ISR Video Attenuator). You may be able to fool the video card into thinking it's driving a color monitor by using a MacLiberty adapter [cheap--ordering address appears in "Advice"] to program the sense pins appropriately.
•If the “Radius PrecisionColor 8” and “Radius PrecisionColor 8Xj” sense a monochrome monitor then they always operate in "gray" mode, even though the driver allows you to set and read the color/gray bit. Try TimeVideo.
•Tom Busey asks, "I have an apple 2-page monochrome monitor, and I'd like to use an ISR Video Attenuator with it [see VideoToolbox:ISR Video Attenuator]. The problem is that my PowerMac 7100 vram port insists that the 2-page monitor is grayscale only, i.e. TimeVideo reports !color. Is there any way to trick the card into thinking it is in color so that I can use my video attenuator?" A few weeks later, he adds, “The MacLiberty adapter does fool the computer into thinking I’ve got a color monitor. However, the monitor has an unusual connector and takes its input from the blue instead of the green video pin, so I'm making a custom video attenuator with its output on that pin.”
7. Other bugs:
•“DOME Md Imaging Card” (.Display_Video_Apple_DOMEMd version 2) calling cscGetEntries returns RRR instead of RGB. (Patrick Flanagan reported it to DOME on 3/29/95.)
•“Spectrum/8•24 PDQ” (.Display_Video_Apple_SpecRice version 3) failed all cscGetEntries tests when in 16-bit-pixel mode.
•“Truevision NuVista+™ Card” (.Display_Video_NuVista version ??) fails all cscGetEntries tests. Reported by David Rose <PSY009@sysh.surrey.ac.uk> on 8/94.
•Relax 19" Model 200 (.Color_Video_Display version 9288) doesn't support the optional cscGetGamma Status call. The required cscGetPageCnt (aka cscGetPages) Status call erroneously returns a page count of 0 for all modes. Try TimeVideo or TestGDVideo. (Reported to Relax Tech. 1/19/93)
•TrueVision NuVista version 3.0 can't display MacsBug.
•The presence of the 8•24GC accelerator seems to HALVE the speed of CopyBits, at least on a RasterOps 8XL running on a Mac IIfx. CopyBitsQuickly is unaffected, of course.
•Apple PowerBook 520/540 "CSC-2 Built-In Video" (.Display_Video_Apple_CSC version 4) apparently makes small 1-2% errors in the write-then-read cscSetEntries-cscGetEntries CLUT test performed by TimeVideo. (Perhaps it doesn't support cscSetGamma.)
6. Video drivers that have been tested (version 0, unless noted otherwise):